{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 零基础实战机器学习 源代码\n",
    "\n",
    "第8讲 特征工程-创建新特征的示例\n",
    "\n",
    "作者 黄佳\n",
    "\n",
    "极客时间专栏链接：https://time.geekbang.org/column/intro/438"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd #导入Pandas\n",
    "import numpy as np #导入NumPy\n",
    "import matplotlib.pyplot as plt #导入绘图工具"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X</th>\n",
       "      <th>Y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.27</td>\n",
       "      <td>-0.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.80</td>\n",
       "      <td>0.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.46</td>\n",
       "      <td>-0.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.69</td>\n",
       "      <td>0.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.16</td>\n",
       "      <td>-0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>0.78</td>\n",
       "      <td>0.85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196</th>\n",
       "      <td>0.19</td>\n",
       "      <td>-0.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>-0.34</td>\n",
       "      <td>0.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>198</th>\n",
       "      <td>-0.45</td>\n",
       "      <td>0.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>199</th>\n",
       "      <td>-0.22</td>\n",
       "      <td>0.21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        X     Y\n",
       "0    0.27 -0.16\n",
       "1   -0.80  0.65\n",
       "2   -0.46 -0.42\n",
       "3   -0.69  0.34\n",
       "4   -0.16 -0.12\n",
       "..    ...   ...\n",
       "195  0.78  0.85\n",
       "196  0.19 -0.11\n",
       "197 -0.34  0.31\n",
       "198 -0.45  0.34\n",
       "199 -0.22  0.21\n",
       "\n",
       "[200 rows x 2 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('特征构建示意数据集.csv') #导入数据\n",
    "df #显示数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Y值')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:238: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:201: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(df.X, df.Y) #X，Y散点图\n",
    "plt.xlabel('X值') #x轴\n",
    "plt.ylabel('Y值') #y轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split #导入train_test_split \n",
    "df_x = df['X'].to_frame() #特征集\n",
    "df_y = df['Y'] #标签集\n",
    "X_train, X_test, y_train, y_test = train_test_split(df_x,df_y,test_size=0.3, random_state = 0) #拆分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression #导入LinearRegression\n",
    "model = LinearRegression() #创建模型\n",
    "model.fit(X_train, y_train) #拟合模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Y值')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:238: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:201: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(df.X, df.Y) #散点图\n",
    "plt.plot(X_test, model.predict(X_test),linestyle='--', color = 'red') #显示拟合曲线\n",
    "plt.xlabel('X值') #x轴\n",
    "plt.ylabel('Y值') #y轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2_train = X_train.copy() #新特征训练集\n",
    "X2_test = X_test.copy() #新特征测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X</th>\n",
       "      <th>X2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>131</th>\n",
       "      <td>0.21</td>\n",
       "      <td>0.0441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>0.33</td>\n",
       "      <td>0.1089</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>181</th>\n",
       "      <td>-0.47</td>\n",
       "      <td>0.2209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0.13</td>\n",
       "      <td>0.0169</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>-0.52</td>\n",
       "      <td>0.2704</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        X      X2\n",
       "131  0.21  0.0441\n",
       "96   0.33  0.1089\n",
       "181 -0.47  0.2209\n",
       "19   0.13  0.0169\n",
       "153 -0.52  0.2704"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X2_train['X2'] = X2_train['X']**2 #构建新特征X2\n",
    "X2_train.head() #显示新特征训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2_test['X2'] = X2_test['X']**2 #构建新特征X2\n",
    "# X2_test #显示新特征测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model2 = LinearRegression() #创建新模型\n",
    "model2.fit(X2_train, y_train) #拟合新模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Y值')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:238: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "C:\\Users\\jacky.huang\\Anaconda3\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py:201: RuntimeWarning: Glyph 8722 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(df.X, df.Y) #散点图\n",
    "# plt.plot(X_test, model.predict(X2_test),linestyle='--',color = 'red')\n",
    "plt.scatter(X_test, model2.predict(X2_test), linestyle='--', color = 'red') #新拟合函数曲线\n",
    "plt.xlabel('X值') #x轴\n",
    "plt.ylabel('Y值') #y轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
